package com.sdleyou.treepro.common.service;

import com.sdleyou.treepro.common.model.dao.Page;
import com.sdleyou.treepro.common.model.dto.CompanyDTO;
import com.sdleyou.treepro.common.model.vo.CompanyUserVO;
import com.sdleyou.treepro.common.model.vo.CompanyVO;
import com.sdleyou.treepro.common.model.vo.UserCompanyAppliesVO;


public interface UserCompanyManager {
    /**
     * 创建公司
     *
     * @param companyDTO
     */
    void initCompany(CompanyDTO companyDTO);

    /**
     * 获取公司内人员列表
     *
     * @param companyId
     * @param userId
     * @param pageSize
     * @param pageNum
     * @return
     */
    Page<CompanyUserVO> companyUsers(String companyId, String userId, Integer pageSize, Integer pageNum, String keywords);

    /**
     * 获取公司信息
     *
     * @param companyId
     * @return
     */
    CompanyVO getCompany(String companyId, String userId);

    /**
     * 获取公司列表
     *
     * @param pageSize
     * @param pageNum
     * @param keywords
     * @return
     */
    Page<CompanyVO> getCompanies(Integer pageSize, Integer pageNum, String keywords);

    /**
     * 退出企业
     *
     * @param companyId
     * @param userId
     */
    void quitCompany(String companyId, String userId);

    /**
     * 申请加入公司
     *
     * @param companyId
     * @param userId
     */
    void joinCompany(String companyId, String userId);

    /**
     * 获取申请加入公司的用户列表
     *
     * @param companyID
     * @param status
     * @param pageSize
     * @param pageNum
     * @return
     */
    Page<UserCompanyAppliesVO> companyApplies(String companyID, String status, Integer pageSize, Integer pageNum);

    /**
     * 审核申请
     *
     * @param companyId
     * @param userId
     * @param status
     */
    void auditApply(String companyId, String userId, String status);
}
